﻿using UnityEditor;
using UnityEngine;

namespace RootMotion
{

    // Custom drawer for the LargeHeader attribute
    [CustomPropertyDrawer(typeof(InspectorComment))]
    public class InspectorCommentDrawer : DecoratorDrawer
    {
        // Used to calculate the height of the box
        public static Texture2D lineTex = null;
        private GUIStyle style;

        InspectorComment comment { get { return ((InspectorComment)attribute); } }

        // Get the height of the element
        public override float GetHeight()
        {
            style = GetStyle();
            return style.CalcHeight(new GUIContent(comment.name), EditorGUIUtility.currentViewWidth) + 10f;

            //return base.GetHeight() * 1.5f;
        }

        // Override the GUI drawing for this attribute
        public override void OnGUI(Rect pos)
        {
            // Get the color the line should be
            Color color = Color.white;
            switch (comment.color.ToString().ToLower())
            {
                case "white": color = Color.white; break;
                case "red": color = Color.red; break;
                case "blue": color = Color.blue; break;
                case "green": color = Color.green; break;
                case "gray": color = Color.gray; break;
                case "grey": color = Color.grey; break;
                case "black": color = Color.black; break;
            }

            color *= 0.5f;

            style = GetStyle();
            
            GUI.color = color;

            Rect labelRect = pos;
            //labelRect.y += 10;
            EditorGUI.LabelField(labelRect, new GUIContent(comment.name), style);

            GUI.color = Color.white;
        }

        private GUIStyle GetStyle()
        {
            var style = new GUIStyle(GUI.skin.label);
            style.fontSize = 10;
            style.fontStyle = FontStyle.Normal;
            style.wordWrap = true;
            style.alignment = TextAnchor.LowerLeft;
            return style;
        }
    }
}